<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>js内置对象</title>
	</head>
	<body>
		
	</body>
	<script type="text/javascript">
		/* 重点：
			JavaScript 有3大对象：本地对象，内置对象，宿主对象。*/
			/* ECMAScript标准定义: */
				/* 本地对象
				 与宿主无关，独立于宿主环境的ECMAScript实现提供的对象。
				 简单来说，本地对象就是 ECMA-262 定义的类（引用类型）。
				 这些引用类型在运行过程中需要通过new来创建所需的实例对象。
				 包含：Object、Array、Date、RegExp、Function、Boolean、Number、String等。*/
				/* 内置对象
				 与宿主无关，独立于宿主环境的ECMAScript实现提供的对象。
				 在 ECMAScript 程序开始执行前就存在，本身就是实例化内置对象，开发者无需再去实例化。
				 内置对象是本地对象的子集。
				 包含：Global和Math。
				 ECMAScript5中增添了JSON这个存在于全局的内置对象。*/
				/* 宿主对象
				 由 ECMAScript 实现的宿主环境提供的对象，包含两大类，一个是宿主提供，一个是自定义类对象。
				 所有非本地对象都属于宿主对象。
				 对于嵌入到网页中的JS来说，其宿主对象就是浏览器提供的对象，浏览器对象有很多，如Window和Document等。
				 所有的DOM和BOM对象都属于宿主对象。*/
			
		/* javascript自身内置的对象 */
		
		/* JavaScript中的全局属性 */
			/* 1.Infinity 
					用于存放表示无穷大的数值。
					在Javascript中，超出 1.7976931348623157E+10308 的数值即为Infinity，小于 -1.7976931348623157E+10308 的数值为无穷小。*/
			/* 2.NaN 
					指定一个"非数字"值*/
			/* 3.undefined
					指定一个未被赋值的变量*/				
			window.document.writeln("1.Infinity"+"</br>");//writeln()输出的结果后带一空格.
			//eg:
			var x=1.7976931348623157E+10308;
				document.write(x + "<br>");
			var y=-1.7976931348623157E+10308;
				document.write(y + "</br>");
					
			/* 全局方法 */
			/* 	decodeURI()	对encodeURI()转义的字符串解码。
				decodeURIComponent()	对encodeURIComponent()转义的字符串解码。
				encodeURI()	返回参数的副本,其中某些字符被十六进制的转义序列替换了, 建议使用encodeURIComponent()对字符串进行编码。
				encodeURIComponent()	返回参数的副本,其中某些字符被十六进制的转义序列替换了。
				escape()	用转义序列替换某些字符来字符串编码。
				eval()	计算Javascript代码串,返回结果。
				isFinite()	检验一个值是否是无穷大的数字。
				isNaN()	检验一个值是否是非数字的值。
				parseFloat()	从字符串解析一个数字。
				parseInt()	从字符串解析一个数字。
				unescape()	对用escape()编码的字符串解码。
				--------------------- 
				作者：自然鸟神 
				来源：CSDN 
				原文：https://blog.csdn.net/chenpeng19910926/article/details/50826099 
				版权声明：本文为博主原创文章，转载请附上博文链接！ */
			
				/* 全局方法直接调用 */
				document.write("</br>");
				
				/* eval() */
					var result = eval("console.log('运行eval结果。')");//运行了console.log('运行eval结果。'),但无返回值
					document.write(result + "</br>");
					result = eval("(function(){return 0;})()");//运行了代码函数块,并得到了返回结果0.
					document.write(result + "</br>");
					//注: 运行eval()函数的放回值是由其运行的代码来决定的.
					//且eval()中运行的对象string不能是空字符串.
					document.write("</br>");
				
				/* escape() */
					//escape() 函数可对字符串进行编码，这样就可以在所有的计算机上读取该字符串。
					result = escape("a    !&^");
					document.write(result + "</br>");//输出结果:a%20%20%21%26%5E
					//其中某些字符被替换成了十六进制的转义序列。
					//unescape() 对 escape() 编码的字符串进行解码。
					result = unescape(result);
					document.write(result + "</br>");//输出结果:a !&^"
					//其结果只会显示一个空格,即便原代码中多个空格.
					//注: ECMAScript v3 反对使用该方法，应用使用 decodeURI() 和 decodeURIComponent() 替代它。
					document.write("</br>");
				
				/* isNaN() */
					result = isNaN(result);
					document.write(result + "</br>");//输出结果: true 表示非数字
					//NaN:not a number的缩写
					document.write("</br>");
				
				/* toString()方法 */
					result = [1,2,3].toString();				//结果: "1,2,3"
					document.write(result + "</br>");//输出结果: true 表示非数字
					result = (function(x){
						alert("1");
					}).toString();	//结果: "function(x){\n f(x);\n}" */
					document.write(result + "</br>");//输出结果: true 表示非数字
					result = /\d+/g.toString();		//结果: "/\\d+/g"
					document.write(result + "</br>");//输出结果: true 表示非数字
					result = new Date(2010,0,1).toString();	//结果: "Fri Jan 01 2010 00:00:00 GMT-0800 (PST)"
					document.write(result + "</br>");//输出结果: true 表示非数字
			
	</script>
</html>
